911 call data from Kaggle.
The data contains the following fields:
## jupyter notebook --NotebookApp.iopub_data_rate_limit=1.0e10
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import cufflinks as cf
import plotly.graph_objs as go
import plotly.plotly as py
from collections import Counter
from plotly.graph_objs import *
from plotly.offline import download_plotlyjs, init_notebook_mode,plot,iplot
init_notebook_mode(connected = True)
cf.go_offline()
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
import plotly
plotly.tools.set_credentials_file(username='yuan_hu', api_key='6cTZkjF30Egp6LuK7drd')
mapbox_access_token = '9qhg46fftx'
dateparse = lambda x: datetime.datetime.strptime(x,'%Y-%m-%d %H:%M:%S')
df = pd.read_csv("911.csv",
header=0,names=['lat', 'lng','desc','zip','title','timeStamp','twp','addr','e'],
dtype={'lat':str,'lng':str,'desc':str,'zip':str,
'title':str,'timeStamp':str,'twp':str,'addr':str,'e':int},
parse_dates=['timeStamp'],date_parser=dateparse)
df['Reason'] = df['title'].apply(lambda title: title.split(':')[0])
df['timeStamp'] = pd.to_datetime(df['timeStamp'])
df['Hour'] = df['timeStamp'].apply(lambda time : time.hour)
df['Month'] = df['timeStamp'].apply(lambda time : time.month)
df['Day of Week'] = df['timeStamp'].apply(lambda time: time.dayofweek)
df['Date']=df['timeStamp'].apply(lambda t: t.date())
dmap = {0:'Mon',1:'Tue',2:'Wed',3:'Thu',4:'Fri',5:'Sat',6:'Sun'}
df['Day of Week'] = df['Day of Week'].map(dmap)
df.drop('e', axis = 1, inplace = True)
df.head()
data = [go.Histogram(x = df['Reason'])]
df.iplot(data, filename='basic histogram', xTitle = 'Reason', yTitle = 'Count')
data = [go.Histogram(x = df['Hour'])]
df.iplot(data, filename='basic histogram', xTitle = 'Hour', yTitle = 'Count')
data = [go.Histogram(x = df['Day of Week'])]
df.iplot(data, filename='basic histogram', xTitle = 'Day of Week', yTitle = 'Count')
data = [go.Histogram(x = df['Month'])]
df.iplot(data, filename='basic histogram', xTitle = 'Month', yTitle = 'Count')
trace1 = go.Histogram(x = df[df['Reason'] == 'EMS']['Month'], name = 'EMS')
trace2 = go.Histogram(x = df[df['Reason'] == 'Fire']['Month'], name = 'Fire')
trace3 = go.Histogram(x = df[df['Reason'] == 'Traffic']['Month'], name = 'Traffic')
layout = go.Layout(
xaxis=dict(
title='Month'
),
yaxis=dict(
title='Count'
),
bargap=0.2,
bargroupgap=0.1
)
data = [trace1,trace2,trace3]
fig = go.Figure(data=data, layout=layout)
py.iplot(fig, filename='Month')
import plotly.plotly as py
import plotly.graph_objs as go
df.groupby('Date').count()['twp'].iplot()
plt.tight_layout()
data_ems = df[df['Reason']=='EMS'].groupby('Date').count()['twp']
data_fire = df[df['Reason']=='Fire'].groupby('Date').count()['twp']
data_traffic = df[df['Reason']=='Traffic'].groupby('Date').count()['twp']
data = pd.DataFrame([data_ems, data_fire, data_traffic]).transpose()
data = data.reset_index()
data.columns = ['Date','EMS', 'Fire', 'Traffic']
trace_ems = go.Scatter(x=data.Date,y=data['EMS'], name = 'EMS', opacity = 0.8)
trace_fire = go.Scatter(x=data.Date,y=data['Fire'], name = 'Fire', opacity = 0.8)
trace_traffic = go.Scatter(x=data.Date,y=data['Traffic'], name = 'Traffic', opacity = 0.8)
data = [trace_ems, trace_fire, trace_traffic]
layout = dict(
title = "Manually Set Date Range",
)
fig = dict(data=data, layout=layout)
py.iplot(fig, filename = "Manually Set Range")
dayHour = pd.DataFrame(df.groupby(by=['Day of Week','Hour']).count()['Reason'].unstack())
trace = go.Heatmap(z = np.array(dayHour), x = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23], y = ['Fri', 'Mon', 'Sat', 'Sun', 'Thu', 'Tue', 'Wed'], colorscale = 'Viridis')
data = [trace]
py.iplot(data, filename='Heatmap', xTitle = 'Hour', yTitle = 'Count')
np.array(dayHour)
np.array(df['lat'])
np.array(df['lng'])[:10]
data = Data([
Scattermapbox(
lat=np.array(df['lat'])[:10],
lon=np.array(df['lng'])[:10],
mode='markers',
marker=Marker(
size=9
),
text=np.array(df['title'])[:10],
)
])
layout = Layout(
autosize=True,
hovermode='closest',
mapbox=dict(
accesstoken=mapbox_access_token,
bearing=0,
center=dict(
lat=40,
lon=-75,
),
pitch=0,
zoom=10
),
)
fig = dict(data=data, layout=layout)
py.iplot(fig, filename='Multiple Mapbox')